package com.ssy.lingxi.pay.api.dto.request;

import lombok.Data;

import javax.validation.constraints.*;
import java.io.Serializable;

/**
 * 移动支付实体
 * @author jw.chen
 * @version 2.0.0
 * @date 2020/10/29
 */
@Data
public class MobilePayRequest implements Serializable {
    private static final long serialVersionUID = 5917197289240316445L;

    /**
     * 会员id(收款方)
     */
    @NotNull(message = "会员id要大于0")
    @Positive(message = "会员id要大于0")
    private Long memberId;

    /**
     * 会员角色id(收款方)
     */
    @NotNull(message = "角色id要大于0")
    @Positive(message = "角色id要大于0")
    private Long memberRoleId;

    /**
     * 商户订单号
     */
    @NotBlank(message = "支付订单编码不能为空")
    @Size(max = 32, message = "支付订单编码最长32个字符")
    private String orderCode;

    /**
     * 金额
     */
    @NotNull(message = "金额要大于等于0")
    @PositiveOrZero(message = "金额要大于等于0")
    private Double payMoney;

    /**
     * 服务类型: serviceTypeEnum类
     */
    @NotNull(message = "服务类型不能为空")
    private String serviceType;

    /**
     * 商品描述
     */
    private String remark;

    /**
     * 附加数据--在查询API和支付通知中原样返回
     */
    private String attach;

    /**
     * 支付类型: 1-平台; 2-会员; (非必填，空值会根据资金归集模式)
     */
    private Integer payType;

    /**
     * 支付渠道: 1-平台支付; 2-APP支付; 3-小程序支付;4-H5支付
     * PayChannelEnum.class
     */
    private Integer payChannel;

    /**
     * 微信商户号
     */
    private String merchantId;

    /**
     * 微信ApiKey
     */
    private String apiKey;

    /**
     * 开发者Id
     */
    private String appId;

    /**
     * 开发者密钥
     */
    private String appKey;

    /**
     * 小程序登录凭证code
     */
    private String jsCode;

    /**
     * 小程序开发者Id
     */
    private String appletAppId;

    /**
     * 小程序开发者密钥
     */
    private String appletAppKey;

    /**
     * 用于缓存订单参数的随机字符串
     */
    private String nonce;
}
